/*
  操作文件模块
*/
var fs = require('fs');

/*
  解压文件模块
*/
// npm install unzip
var unzip = require('unzip');

// 定义个需要执行命令的 html 文件
var folder=[];

// 定义个盛放文件的数组
var fileList=[];

// 遍历指定文件夹中所有文件的方法
function walks(path){
  var dirList = fs.readdirSync(path);
  dirList.forEach(function(item){
    if(fs.statSync(path + '/' + item).isFile()){
      fileList.push(path + '/' + item);
    }
  });
  dirList.forEach(function(item){
    if(fs.statSync(path + '/' + item).isDirectory()){
      walks(path + '/' + item);
    }
  });
}

// 初始状态
console.log('正在处理,请稍后...');
function ergodic1(){
  walks('.');
  for(var i=0;i<fileList.length;i++){
    var t1=fileList[i].lastIndexOf('/');
    var catalog=fileList[i].substring(0,t1+1);
    if(fileList[i].indexOf('.zip')!=-1&&fileList[i].indexOf('wap/')==-1){
      fs.createReadStream(fileList[i]).pipe(unzip.Extract({ path: catalog}));
      fs.unlinkSync(fileList[i]);
    }
  }
}
function ergodic2(){
  fileList=[];
  walks('.');
  for(var i=0;i<fileList.length;i++){
    var t1=fileList[i].lastIndexOf('/');
    var catalog=fileList[i].substring(0,t1+1);
    if(fileList[i].indexOf('.zip')!=-1&&fileList[i].indexOf('wap/')!=-1){
      fs.unlinkSync(fileList[i]);
    }
    // 获得需要操作的 html 文件
    if(fileList[i].indexOf('wap/')!=-1&&fileList[i].indexOf('.html')!=-1){
      folder.push(fileList[i]);
    }
  }
}
function ergodic3(){
  if(!folder.length){
    console.log('没有需要操作的文件...');
    return;
  }
  var j=0;
  while (j<folder.length) {
    var opath=folder[j];
    console.log(opath);
    // 读取文件  路径/编码 注：这里读写文件使用同步
    var data =fs.readFileSync(opath,'utf-8');
    // 获得 title 中应该写入的文本
    var result=data.substring(data.indexOf('<a href="#">')+12,data.indexOf('</a>'));
    // 执行改变 title 文本
    var dataText=data.replace('Document',result);
    // 判断客服是否存在
    if(dataText.indexOf('script></body>')==-1){
      // 执行添加 移动客服代码
      var dataText=dataText.replace('</body>','<script type="text/javascript"> var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src=\'" + _bdhmProtocol + "hm.baidu.com/h.js%3Fa360d495157e0b98392c67f8a0629e0a\' type=\'text/javascript\'%3E%3C/script%3E")) </script></body>')
    }
    // 将修改后的文件写入源文件
    fs.writeFileSync(opath,dataText,'utf-8');
    j++;
  }
  console.log('恭喜，操作完成！！！');
}
ergodic1();
setTimeout(ergodic2,2000);
setTimeout(ergodic3,3000);


/*
  优点：
    一次运行，全部搞定。

  使用文档：
    0，放的文件名需要是 wap 或者解压后是 wap 。
    1，放的文件可以和 run.js 同级，也可以在 run.js 的同级文件夹下面。
    2，每个同级目录下只能放一个要处理的 wap 压缩包文件或者 wap 包文件。
    3，wap 包中若存在压缩文件将自动删除。
    4，放好需要做的文件后，将可以用三种方式运行 run.js
      (0),.bat操作：双击 run.bat 即可。
      (1),命令行：在该目录下，shift+右键->在此处打开命令窗口->输入 'node run.js',即可。
      (2),sublime: 使用 sublime 打开 run.js  ctrl+b 即可运行。
    5，若出错误，请仔细参考前 3 条。

  编辑于15/6/25
  首发博客：http://www.yuanqiao.comxa.com/post-60.html

*/


/*

    实现效果：将动态改变 title 的内容，并且会在底部加上移动客服代码

    改变前
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Document</title>
      </head>
      <body>
        <a href="#">这个标题会到 title 中</a>
        <div>将动态改变 title 的内容，并且会在底部加上移动客服代码</div>
        <!-- 代码 -->
      </body>
      </html>

    改变后
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>这个标题会到 title 中</title>
      </head>
      <body>
        <a href="#">这个标题会到 title 中</a>
        <div>将动态改变 title 的内容，并且会在底部加上移动客服代码</div>
        <!-- 代码 -->
        这里是移动客服代码
      </body>
      </html>

*/

